package com.xinqi.modules.course.clazz.service;


import com.xinqi.common.base.user.Account;
import com.xinqi.common.core.enums.StudentSwitchType;
import com.xinqi.common.rocketmq.dto.CourseClassMessageBody;

/**
 * 班级异步服务接口
 *
 * @author linkai
 * @date 2023/3/14
 */
public interface ClassSyncService {

    /**
     * 班级MQ消息处理接口
     *
     * @param body
     */
    void processingClass(CourseClassMessageBody body);


    /**
     * 课程转让事件（只能转给班里学生，不能转给助教）
     */
    void courseTransfer(Long classId, Long studentId);

    /**
     * 成员身份却换事件（学生转助教、助教转学生）
     */
    void studentIdentitySwitch(Long classId, Long studentId, StudentSwitchType switchType);

    /**
     * 解散班级
     */
    void disbandClass(Long classId);

    /**
     * 学生加入班级
     */
    void studentJoinClass(Long classId, Long studentId);

    /**
     * 学生退出班级
     */
    void studentQuitClass(Long classId, Long studentId, String studentName, Account user);

    /**
     * 添加外部助教
     *
     * @param classId
     * @param userId
     * @param user
     */
    void addAssistant(Long classId, Long userId, Account user);
}
